package com.twb.message.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import com.twb.core.base.entity.TwbPageInfo;
import com.twb.core.base.service.IBaseService;
import com.twb.message.entity.message.Message;
import com.twb.message.entity.message.dto.SearchMessageDto;
import com.twb.message.entity.message.vo.SaveMessageVo;
import com.twb.message.entity.message.vo.SearchMessageByUserVo;
import com.twb.message.entity.message.vo.SearchMessageVo;
import com.twb.message.entity.message.vo.UpdateMessageByIdVo;

/** 
 * @ClassName IMessageService 
 * @Description 系统消息管理 service接口
 
 * @author DHL
 * @date 2021-07-14 09:22:28 
 */ 
public interface IMessageService extends IBaseService<Message> {

	/**
	 * @Title  searchMessage
	 * @Description 分页查询
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public TwbPageInfo<SearchMessageDto> searchMessage(SearchMessageVo vo);
	
	/**
	 * @Title  searchMessage
	 * @Description 查询集合
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public List<SearchMessageDto> searchMessageList(SearchMessageVo vo);

	/**
	 * @Title  saveMessage
	 * @Description 保存信息
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public boolean saveMessage(SaveMessageVo vo);

	/**
	 * @Title  updateMessageById
	 * @Description 更新信息
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public boolean updateMessageById(UpdateMessageByIdVo vo);

	/**
	 * @Title  deleteMessageById
	 * @Description 删除信息
	 * @param id
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public boolean deleteMessageById(String id);
	/**
	 * @Title  deleteMessageByIds
	 * @Description 批量删除信息
	 * @param ids
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public boolean deleteMessageByIds(String ids);
	
	/**
	 * @Title  logicBatchDeleteMessageByIds
	 * @Description 批量逻辑删除
	 * @param ids
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public int logicBatchDeleteMessageByIds(String ids);
	/**
	 * @Title  exportExcel
	 * @Description 导出excel
	 * @param exportExcelVo
	 * @param searchVo
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public void exportExcel(SearchMessageVo vo, HttpServletResponse response) throws Exception;
	
	/**
	 * @Title  importExcel
	 * @Description 导入excel
	 * @param map
	 * @return
	 * @author DHL
	 * @date 2021-07-14 09:22:28
	 */
	public int importExcel(Map<String, String> map);

	/**
	 * @Title publish
	 * @Description 发布消息
	 * @param messageId
	 * @return
	 * @author DHL
	 * @date 2021年7月15日 上午8:51:57
	 */
	public boolean publish(Message message);

	/**
	 * @Title cancel
	 * @Description 撤销发布
	 * @param messsageId	撤销消息ID
	 * @param revokeReason	撤销原因
	 * @return
	 * @author DHL
	 * @date 2021年7月15日 上午9:53:32
	 */
	public boolean cancel(String messsageId, String revokeReason);

	/**
	 * @Title searchMessageByUser
	 * @Description 查询用户消息
	 * @param vo
	 * @return
	 * @author DHL
	 * @date 2021年7月16日 下午2:28:27
	 */
	public TwbPageInfo<SearchMessageDto> searchMessageByUser(SearchMessageByUserVo vo);
	
	/**
	 * @Title readMessage
	 * @Description 阅读消息
	 * @param message
	 * @return
	 * @AuthorOriginally DSY
	 * @date 2022年11月27日 下午4:33:00
	 */
	public boolean readMessage(Message message);
}
